#ifndef FILEITEM_H
#define FILEITEM_H

#include <QWidget>
#include <QListWidgetItem>
#include <QElapsedTimer>
namespace Ui {
class FileItem;
}

class FileItem : public QWidget
{
    Q_OBJECT

public:
    explicit FileItem(QWidget *parent = nullptr);
    ~FileItem();

    void setFileName(const QString name);
    void setFileSize(const int size);
    void setFilePath(const QString path);

    QString getFilePath();
    QListWidgetItem* getListItem();

    QString transformUnit(qint64 bytes , bool isSpeed);//速率转化
    QString transformTime(qint64 seconds);//时间转化

    void setSpeed(qint64 speed);
    void setRemainingTime(qint64 seconds);
public slots:
    void updateProgress(qint64 transferred, qint64 total);
signals:
private slots:
    void onControl();
    void onCancel();

private:
    Ui::FileItem *ui;
    QString filePath;
    QListWidgetItem* listItem; // 列表项指针成员
    qint64 m_lastBytes;    // 上次接收的字节数
    QElapsedTimer m_timer;       // 上次更新时间
    const int m_updateInterval = 1000; // 1000ms更新一次
};

#endif // FILEITEM_H
